sysmon的几个特点分享如下: 1、sysmon会跑在某个vCPU上,我电脑是8核16线程(vCPU0~vCPU15),看到总有一个vCPU的利用率比较高,而且不固定,但基本是在vCPU12~vCPU15 source_id=1001 2、机器空载的时候,sysmon也在不断监测系统并记录日志,因此有持续不断的IO 参考这个录屏文件 3、由于sysmon频繁写磁盘,可能会对ssd寿命有一定影响 可以通过命令停止 sysmon的日志 停止sysmon日志:wevtutil set-log "Microsoft-Windows-Sysmon/Operational" /enabled:false 启用sysmon日志 :wevtutil set-log "Microsoft-Windows-Sysmon/Operational" /enabled:true 创建开机计划任务,停止sysmon的日志 schtasks 的命令 cmd /c "C:\Windows\sysmon.exe -u force" 2>&1 > $null 卸载sysmon,iOA又会把它装回去,iOA依赖sysmon的监测来实现功能
前言 Sysmon是容易下载安装使用的日志审计应用,每个人都可以查看sysmon记录的内容。这些日志被EDR获取的话,能够在这些产品中看到一连串“有趣的东西”。 正文 当我们执行 sysmon.exe -t -i yoursysmonconfig.xml 命令时,突然出现了以下重要的错误信息 ? 这是因为我们提供给sysmon的命令过长,sysmon不得不去进行删减操作。 通过测试发现,sysmon可以显示最多0x2000个字符。也就是说,我们可以在sysmon截断的时候做一些有意义的事情。 当我们执行 powershell <0x2000 spaces> calc 命令时,我们可以看到sysmon只记录到了我执行了powershell命令 ? 但实际上,我最终执行的确是calc。 ? 后续 参考:http://www.hexacorn.com/blog/2018/06/29/sysmon-doing-lines-part-3/
Sysmon和Windows事件日志都是防御者中极为强大的工具。它们非常灵活的配置使他们可以深入了解设备上的活动,从而使检测攻击者的过程变得更加容易。 启动Ghidra并启动sysmon64.exe,我们可以看到它使用ReportEventWWindows API调用来报告事件。 ? 如果您在下面看,您将看到我能够启动Powershell提示而不会触发任何sysmon事件。 因此,现在我们可以使用来开始编写PoC代码了。
sysmon 默默无闻的后台监控 golang 里面里面有一个默默无闻的工作者在后台跑着,它的名字叫 sysmon ,你可能在某个地方见到过它。 启动 首先让我们来看看 sysmon 是谁启动的。 // The main goroutine. func main() { ........... if GOARCH ! // register sysmon is not ready for the world to be // stopped. syscall_runtime_doAllThreadsSyscall, sysmon is // sufficiently up to participate in fixups. 不需要 P 只需要 M 即可执行,能休息就休息,没工作时就慢下来,sysmon 主要做了以下几样工作: 检查死锁 检查网络轮训 检查抢占 检查 gc 总之其实 sysmon 其实在背后承担了一些检查的工作
在 runtime.main() 函数中,执行 runtime_init() 前,会启动一个 sysmon 的监控线程,执行后台监控任务: systemstack(func() { // 创建监控线程 ,该线程独立于调度器,不需要跟 p 关联即可运行 newm(sysmon, nil)}) sysmon 函数不依赖 P 直接执行,通过 newm 函数创建一个工作线程: func newm(fn 但在这里,fn 就是最开始在 runtime.main 里设置的 sysmon 函数,因此这里会执行 sysmon,而它又是一个无限循环,永不返回。 接下来,我们就来看 sysmon 函数到底做了什么? sysmon 执行一个无限循环,一开始每次循环休眠 20us,之后(1 ms 后)每次休眠时间倍增,最终每一轮都会休眠 10ms。 这说明系统调用所花费的时间较长,需要对其进行抢占,以此来使得 retake 函数返回值不为 0,这样,会保持 sysmon 线程 20 us 的检查周期,提高 sysmon 监控的实时性。
sysmon导致句柄泄漏致使windows应用频繁出现IO错误图片停止、禁用、卸载sysmon的话,是执行这个,卸载必须加forceStop-Service -name SysmonSet-Service Sysmon -StartupType DisabledC:\Windows\sysmon.exe -u force
本篇文章介绍通过部署Sysmon并将日志发送到SIEM来探测横向渗透。 工具: Sysmon + Splunk light 安装配置: sysmon -i -n ? 本地查看sysmon事件日志,打开事件查看器 - Microsoft - Windows - Sysmon - Operational 如下图可以看到sysmon记录到powershell.exe进程创建 将下列配置写入inputs.conf文件: [WinEventLog://Microsoft-Windows-Sysmon/Operational]disabled = falserenderXml = 在splunk中查询当前主机的sysmon日志: sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" ? 然后在Splunk中可以看到Sysmon事件已经导入: sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" ?
前情提要: 微软轻量级系统监控工具sysmon内核实现原理 微软轻量级监控工具sysmon原理与实现 前两次我们分别讲了sysmon的ring3与ring0的实现原理,但是当初使用的版本的是8.X的版本 ,最新的版本10.X的sysmon功能有所增加,经过分析代码上也有变化。 BYTE OutBuffer[4002] = { 0 }; ULONG BytesReturned = 0; if ( SUCCEEDED( DeviceIoControl( hObjectDrv, SYSMON_REQUEST_PROCESS_INFO 今天的续篇就此结束,sysmon还是可以挖掘很多很实用得东西,比如每个事件里得ProcessGuid 并不是随机生成得,而是有一定算法得,具体读者可以自行研究发现。 ?
Sysmon 背景 Sysmon日志是由Microsoft系统监视器(Sysmon)生成的事件日志,它们提供有关Windows上的系统级操作的详细信息,并记录进程启动、网络连接、文件和注册表修改、驱动程序和服务活动以及 Sysmon日志在这项工作中发挥着至关重要的作用,它提供了有价值的见解,并使组织能够加强其安全态势。 Event ID Sysmon日志中所使用的全部Event ID都已经在微软的Sysmon页面上进行了介绍,其中包括: 1:进程创建 2:文件创建时间修改 3:网络连接 5:进程终止 11:文件创建 12 :注册表对象创建和删除 13:注册表值设置 22:DNS查询 23:文件删除(带归档) 26:文件删除(不带归档) 工具 本文所进行的安全分析都将在一台Windows VM虚拟机中执行,并配置好Linux ,我们会看到一个大小为1.1MB的Windows事件日志: oxdf@hacky$ file Microsoft-Windows-Sysmon-Operational.evtx Microsoft-Windows-Sysmon-Operational.evtx
Sysmon+Nxlog+GrayLog实现Windows服务器安全日志监控 Sysmon系统监视器是一种 Windows 系统服务和设备驱动程序,一旦安装在系统上,系统重启后,它仍驻留在系统重启中, -2.10.2150.msi 3、sysmonconfig-export.xml配置文件 4、建议安装nodepad++用于编辑配置文件 (图片可点击放大查看) (图片可点击放大查看) 1、安装Sysmon Sysmon64.exe -i sysmonconfig-export.xml -accepteula (图片可点击放大查看) 其中sysmonconfig-export.xml 这个配置模板文件从哪获取 ,懂的都懂 就不展开讨论了 2、安装Nxlog并修改nxlog.conf (图片可点击放大查看) nxlog.conf配置文件中部分内容如下 <Input sysmon> Module im_msvistalog => sysmonout </Route> (图片可点击放大查看) 3、启动nxlog服务 (图片可点击放大查看) 4、GrayLog配置Input 这里为了区别系统日志与Sysmon日志
与标准的Windows事件日志相比,Sysmon提供了更详细、高质量的日志信息和更精细的配置控制,是进行深度威胁狩猎和应急响应的基石。#####什么是Sysmon? .Sysmon配置详解(SysmonConfigurationinDetail)Sysmon的强大之处在于其灵活的XML配置文件。 获取配置文件:下载一个社区维护的优秀配置文件,例如SwiftOnSecurity的sysmon-config。 #####启动Sysmon以管理员身份打开PowerShell或命令提示符,使用-i参数安装Sysmon服务并应用配置文件。 Bash展开代码语言:TXTAI代码解释#假设Sysmon.exe和配置文件位于同一目录下Sysmon.exe-accepteula-iswift.xml3.日志分析与最佳实践(LogAnalysisandBestPractices
SwiftOnSecurity的配置文件并没有映射ATT&CK矩阵,所以只能非常遗憾地将其作为一个本地的SYSMON日志记录配置文件;而另外一位大佬ion-storm,他fork的ThreatIntelligence SIEM的SYSMON配置文件却刚好做了ATT&CK矩阵的映射,参见:https://github.com/ion-storm/sysmon-config。 如此,我们就可以想办法将SPLUNK+SYSMON+ATT&CK关联起来了,很可惜,这位大佬的文档已经几年不更新了,所以他的配置文件需要自行修改。 而与此同时,另外一位大佬olafhartong编写了“sysmon-modular”,分门别类地将SYSMON的各级事件日志详细地分类并规整为一份完整的,系统的ATT&CK矩阵映射的SYSMON配置文件 列出宏文件的处理时间 当然,使用SYSMON必然会有很多噪音以及误报,所以需要大量的人力去进行配置的维护和规则的处理,这个强大的白名单机制可以减轻大量的人工操作,简单,快捷而有效。
1、 如图所示,指定配置文件安装 sysmon,使用“-c”参数可以查看当前的配置情况。 加载的配置文件ProcdumporTaskmgr.xml 为: <Sysmon schemaversion="**4.21**"><EventFiltering> <ProcessAccess 至此,我们已经借助 sysmon 分析出当前操作系统中发生过的内存转储行为,当然防御时必须提前配置 sysmon 进行监控。 为了使用 sysmon 监控更多行为,也可以在安装 sysmon 时不添加过滤器,分析时使用事件查看器的过滤器进行筛选。 除了 sysmon,我们还可以使用功能比较强大的 SIEM 系统进行实时监控。 小贴士: 1、 系统没有为上述远程访问方法创建本地配置文件(文件系统、注册表)。
10、易于与其他工具集成(Splunk、ELK、MISP…); 工具架构 注意:EDR代理可以单独运行(可以不用跟EDR管理器连接) 工具运行机制 工具依赖 首先,我们需要安装并配置好 Sysmon参考资料: https://docs.microsoft.com/enus/sysinternals/downloads/sysmon。 接下来,完成Sysmon的配置,并记录所有的ProcessCreate和ProcessTerminate事件。最后,记录下Sysmon代码的路径,之后需要使用到。 工具配置 为了最大化Whids的功能,我们需要做以下工具配置: 1、启用PowerShell模块日志功能:gpedit.msc -> Computer Configuration\Windows Settings 接下来,按照下列步骤操作即可: 1、如果需要使用HTTPS,则需要创建TLS证书; 2、然后创建一个配置文件; 3、最后运行代码即可; 许可证协议 本项目的开发与发布遵循AGPL-3.0开源许可证协议
Sysmon 注意:Sysmon是微软对于Eventlog的补充解决方案,这是笔者对于Sysmon的理解,Sysmon可以能够获取到Evenlog获取不到的更多信息,MS解释Sysmon。 sysmon64.exe -i exampleSysmonConfig.xml //执行安装: sysmon64.exe -u //删除 执行安装 删除 注意:exampleSysmonConfig.xml为Sysmon的配置文件,内容和名字均可以自定义,内容可以自行进行增加或修改。 > 参考配置文件:sysmonconfig-export.xml Powershell查看Sysmon日志 Get-WinEvent -LogName Microsoft-Windows-Sysmon 然后可以自行导入sysmon帮助工具进行分析:sysmontools 若是权限维持中的WMI事件,则sysmon可以关注如下四个事件ID Process Create(ID 1) WmiEventFilter
但是有一点,windows默认的自带日志除了登录日志对我们有点用处以外,其他的貌似用户不大,对于分析人员来说,可能更想看到的是哪个文件执行了具体的历史命令,那我们这里就要介绍以windows记录详细日志的sysmon 为例,把sysmon日志也同步过来。 首先我们在服务端上安装好sysmon 装好以后会在日志目录在出现sysmon日志文件 ? 我们可以先打开sysmon日志看下,发现日志比windows自带日志详细很多 ? = true 修改完以后最好重启一下,然后我们看下客户端,发现能够看到sysmon的日志也同步过来了,能够利用各种搜索语句便于我们后续的分析 ? 开启方法如下 本地计算机策略-计算机配置-管理模板-系统-审核过程过程-启用 ? ? 本地计算机策略-windows设置-安全设置-高级审核策略配置-详细跟踪-开启 ?
0x02 平台架构/构建 操作系统 功能角色 采集数据 插件配置 Windows server 2012 域控服务器 Windows event log、Sysmon_log Splunk_forwarder 、Sysmon Windows server 2016 域内主机 Windows event log、Sysmon_log Splunk_forwarder、Sysmon Ubuntu 18.04 Linux 18.04 Soc服务器 Splunk Free Kali linux 模拟Red Team 环境构建说明 1、模拟部署Windows AD域环境,并在域环境下开启Windows日志审核策略,并部署Sysmon 部署Splunk日志转发工具,转发Windows event_log和Sysmon_log至Soc平台; 2、部署Ubuntu18.04,并安装Splunk Free,作为Soc平台,收集域内主机日志, 基于这套小型仿真威胁狩猎平台,你还可以做更多的事情,值得你去发掘,比如利用Sysmon、Audit日志等,去做更有意义的事情。
whids是一款Go语言开发的开源EDR,其官方地址为: https://github.com/0xrawsec/whids 其优点如下: Open Source Relies on Sysmon for 部署过程 首先需要安装Sysmon,最新版本为13.1,下载地址为:https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon ? 然后导入其配置,地址为:https://github.com/0xrawsec/whids/tree/master/tools/sysmon/v13 ? 如有需要,可以配置下面的两个的选项: gpedit.msc -> Computer Configuration\Windows Settings\Security Settings\Advanced
配置Sysmon日志记录 我们可以将Sysmon配置为记录WmiEventFilter,WmiEventConsumer和WmiEventConsumerToFilter活动,并启用WMI滥用检测。 Roberto Rodriguez 的(@Cyb3rWard0g)Sysmon配置文件将捕获上述事件ID。 执行以下命令安装Sysmon,并应用配置文件。 sysmon.exe -i -c . 检测 查看Sysmon日志,我们可以看到Empire模块: 注册了一个WMI事件过滤器; 注册了一个WMI事件使用者; 将事件使用者绑定到事件过滤器。
资源准备 测试验证主要资源及软硬件配置信息如下: 笔记本电脑:CPU 4核1.8GHz、内存16GB、SSD硬盘1T,虚拟化软件VMware Workstation Pro 15。 日志采集软件:Sysmon+modular sysmonconfig.xml配置文件,日志传送软件winlogbeat和filebeat。 基于Sysmon的“左右互搏术” Sysmon是微软安全人员开发的一种 Windows系统服务和设备驱动程序,一旦安装在系统上,就会在系统重启后保持驻留状态,以监视系统活动并将其记录到 Windows Sysmon for Linux可以检测此类攻击行为,修改Sysmon配置文件,添加如下图所示检测规则,可检测Linux账号创建行为。 当然使用Sysmon也有其局限性,通过卸载Sysmon或关闭Sysmon进程或hook ETW,达到绕过Sysmon检测,或者将winlogbeat、filebeat这类传送日志的进程关闭,从而使SEIM